QUICKREPORT A MEMO

Otázka od: Ján Kuchár

23. 9. 2002 8:27

Caute,

v programu mam databazy textu, kterou jsou postupne naplnil pres komponentu
memo a ted potrebuju zabezepecit vypis techto jednotlivych textu jako
samostatne bloky na quickreport asi nasledovne :

M1 M2 M3
M4 M5 M6
M7 M8 M9

kde cisla M1-az xxx predsavuji prave ty jednotlive texty z mema o nekolika
radcich a o libovolne delce radku.

OTAZKY :
1 - jak zabezpecit prave to vypisovani za sebou
2 - co kdyz nebudu chtit zrusit zobrazeni napr. M3, jak posunout poradi tech
ostatnich memo pozic



Ing. Ján Kuchár PhD.
Ruská 14, Třebíč 674 01
e-mail : kuchar@unicodesys.cz

Odpovedá: Michal Sefcik

23. 9. 2002 12:33

> -----Original Message-----
> From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]On
> Behalf Of Ján Kuchár
> Sent: Monday, September 23, 2002 8:58 AM
> To: Delphi
> Subject: QUICKREPORT A MEMO
> OTAZKY :
> 1 - jak zabezpecit prave to vypisovani za sebou
> 2 - co kdyz nebudu chtit zrusit zobrazeni napr. M3, jak posunout poradi
tech
> ostatnich memo pozic
>

Ja resim vypis promenliveho poctu poznamek do 3 sloupcu generovanim
childbandu a qrmemo komponent na nich s pouzitim teto tridy:

type PMemoItem = ^TMemoItem;
     TMemoItem = record
                   Band : TQRChildBand;
                   MA : array[1..3] of TQRMemo;
                   Next : PMemoItem;
                 end;
     TMemoList = class
       First : PMemoItem;
       constructor Create;
       destructor Destroy;
     public
       procedure Add(F : TForm);
     end;

constructor TMemoList.Create;
begin
  First := nil;
end;

destructor TMemoList.Destroy;
var pi : PMemoItem;
    i : byte;
begin
  while First <> nil do begin
    pi := First;
    First := First.next;
    for i := 1 to 3 do
    if pi.MA[i] <> nil then pi.MA[i].Free;
    pi.Band.Free;
    Dispose(pi);
  end;
end;

procedure TMemoList.Add(F : TForm);
var pi, pn : PMemoItem;
    i : byte;
begin
  pi := First;
  // najdi poslední
  while (pi <> nil) and (pi.Next <> nil) do
    pi := pi.Next;

  if (pi = nil) or (pi.MA[3] <> nil) then begin
    new(pn);
    pn^.Band := TQRChildBand.Create(F);
    pn^.Band.Parent := (F as TFP_Kons).QuickRep1;
    pn^.Band.Height := 116;
    for i := 1 to 3 do
      pn^.MA[i] := nil;
    pn^.Next := nil;
    if pi = nil then begin
      pn^.Band.ParentBand := (F as TFP_Kons).cb_Ostatni;
      First := pn;
    end else begin
      pn^.Band.ParentBand := pi^.Band;
      pi^.Next := pn;
    end;
    pi := pn;
  end;

  for i := 1 to 3 do
    if pi^.MA[i] = nil then Break;

  pi^.MA[i] := TQRMemo.Create(F);
  pi^.MA[i].Parent := pi^.Band;
  pi^.MA[i].Height := 113;
  pi^.MA[i].Width := 235;
  pi^.MA[i].Left := 5 + (i-1)*240;
  pi^.MA[i].Top := 0;
  pi^.MA[i].Font.Size := 8;
  pi^.MA[i].Lines := (F as TFP_Kons).DBMemo.Lines;
end;


BeforePrint reportu vycreatuju tento seznam a naplnim jej pomoci metody Add;
v AfterPrint jej Destroynu. Kod urcite neni optimalni, nicmene je funkcni
 

************************************************************
Ing.Mgr. Michal Sefcik
Benefit CZ, s.r.o.
Hrubého 11, 612 00 Brno
tel: +420 5 41219098, 9
fax: +420 5 41215886
http: www.benefitcz.cz
************************************************************

Odpovedá: Lstiburek Pavel

23. 9. 2002 11:19

Kazdou dvojici memopolozek dej na samostatny band a zrus autosize

Pavel
> -----Původní zpráva-----
> Od: Karel Horky [mailto:horky.karel@quick.cz]
> Odesláno: 24. září 2002 12:28
> Komu: Ján Kuchár
> Předmět: Re: QUICKREPORT A MEMO
>
>
> Ján Kuchár, <mailto:kuchar@unicodesys.cz> napsal:
> > ted potrebuju zabezepecit vypis techto jednotlivych textu jako
> > samostatne bloky na quickreport asi nasledovne :
>
> > M1 M2 M3
> > M4 M5 M6
> > M7 M8 M9
>
> > kde cisla M1-az xxx predsavuji prave ty jednotlive texty z
> mema o nekolika
> > radcich a o libovolne delce radku.
>
> Kdysi jsem delal sestavy, ktere vypisovaly retezce konstantni delky do
> nekolika sloupcu (1 az 8), pocet sloupcu byl zavisly prave na delce
> retezcu. Bylo to dost huste. Proc si to komplikovat a nepsat
> to krasne jedno
> memo pod druhe ? Zvlast pokud kazde memo ma nekolik radku o libovolne
> delce.
>
> > 2 - co kdyz nebudu chtit zrusit zobrazeni napr. M3, jak
> posunout poradi tech
> > ostatnich memo pozic
>
> Pri vypisu pod sebe se tento problem vyresi sam  .
> ------
> S pozdravem Karel Horky
> horky.karel@quick.cz
> W2K/SP2, D5Ent/UP1
>

Odpovedá: Martin Schayna

23. 9. 2002 15:38

----- Original Message -----
From: "Ján Kuchár" <kuchar@unicodesys.cz>
> v programu mam databazy textu, kterou jsou postupne naplnil pres komponentu
> memo a ted potrebuju zabezepecit vypis techto jednotlivych textu jako
> samostatne bloky na quickreport asi nasledovne :
>
> M1 M2 M3
> M4 M5 M6
> M7 M8 M9

Neco podobneho jsme si do QR dodelali sami, nejsou to sice rozepsane radky
mema ale primo radky subdetailu -- na subdetail jsme si doplnili vlastnost
kterou
zapiname sloupcovy tisk a pocet sloupcu. Tiskneme takto napr. seriova cisla na
doklady apod. Nebylo to snadne ale je to mozne.

Je zajimave, ze tuto vlastnost vetsina generatoru sestav nepodporuje...

Martin Schayna

Odpovedá: Karel Horky

23. 9. 2002 13:04

  Ján Kuchár, <mailto:kuchar@unicodesys.cz> napsal:
> ted potrebuju zabezepecit vypis techto jednotlivych textu jako
> samostatne bloky na quickreport asi nasledovne :

> M1 M2 M3
> M4 M5 M6
> M7 M8 M9

> kde cisla M1-az xxx predsavuji prave ty jednotlive texty z mema o nekolika
> radcich a o libovolne delce radku.

Kdysi jsem delal sestavy, ktere vypisovaly retezce konstantni delky do
nekolika sloupcu (1 az 8), pocet sloupcu byl zavisly prave na delce
retezcu. Bylo to dost huste. Proc si to komplikovat a nepsat to krasne jedno
memo pod druhe ? Zvlast pokud kazde memo ma nekolik radku o libovolne
delce.

> 2 - co kdyz nebudu chtit zrusit zobrazeni napr. M3, jak posunout poradi tech
> ostatnich memo pozic

Pri vypisu pod sebe se tento problem vyresi sam  .
------
S pozdravem Karel Horky
horky.karel@quick.cz
W2K/SP2, D5Ent/UP1